<?php
// 版权所有 (C) 2025 尋鯨錄
// 保留所有权利。
// 博客：https://www.xunjinlu.fun/
// 如需二开请保留版权，谢谢。

// 用户权限认证配置
$config = array(
    // 是否启用用户认证 (true=启用, false=关闭)
    'enable_auth' => true,
    
    // 管理员密码 (使用MD5加密)
    // 默认密码: admin123
    // 你可以修改这个值，但要确保是MD5加密后的字符串
    'admin_password_md5' => 'e10adc3949ba59abbe56e057f20f883e',
    
    // 会话超时时间 (秒) - 默认2小时
    'session_timeout' => 7200,
    
    // 是否记住登录状态 (true=记住, false=不记住)
    'remember_login' => true
);

// 启动会话
if (!session_id()) {
    session_start();
}

// 检查用户是否已登录
function isUserLoggedIn() {
    global $config;
    
    if (!$config['enable_auth']) {
        return true; // 如果认证功能关闭，直接返回true
    }
    
    // 检查会话中的登录状态
    if (isset($_SESSION['user_logged_in']) && $_SESSION['user_logged_in'] === true) {
        // 检查会话是否过期
        if (isset($_SESSION['login_time']) && 
            (time() - $_SESSION['login_time']) < $config['session_timeout']) {
            return true;
        } else {
            // 会话过期，清除登录状态
            logoutUser();
        }
    }
    
    // 检查Cookie中的记住登录状态
    if ($config['remember_login'] && isset($_COOKIE['user_token'])) {
        $token = $_COOKIE['user_token'];
        if (isset($_SESSION['user_token']) && $_SESSION['user_token'] === $token) {
            // 更新登录时间
            $_SESSION['login_time'] = time();
            return true;
        }
    }
    
    return false;
}

// 用户登录
function loginUser($password) {
    global $config;
    
    if (!$config['enable_auth']) {
        return array('success' => true, 'message' => '认证功能已关闭');
    }
    
    // 验证密码
    if (md5($password) === $config['admin_password_md5']) {
        $_SESSION['user_logged_in'] = true;
        $_SESSION['login_time'] = time();
        
        // 生成并保存令牌
        $token = md5(uniqid() . time());
        $_SESSION['user_token'] = $token;
        
        // 设置记住登录Cookie
        if ($config['remember_login']) {
            setcookie('user_token', $token, time() + (30 * 24 * 60 * 60), '/'); // 30天
        }
        
        return array('success' => true, 'message' => '登录成功');
    } else {
        return array('success' => false, 'message' => '密码错误');
    }
}

// 用户登出
function logoutUser() {
    // 清除会话
    unset($_SESSION['user_logged_in']);
    unset($_SESSION['login_time']);
    unset($_SESSION['user_token']);
    
    // 清除Cookie
    if (isset($_COOKIE['user_token'])) {
        setcookie('user_token', '', time() - 3600, '/');
    }
    
    return array('success' => true, 'message' => '已退出登录');
}

// 获取认证状态
function getAuthStatus() {
    global $config;
    
    return array(
        'enabled' => $config['enable_auth'],
        'logged_in' => isUserLoggedIn(),
        'session_timeout' => $config['session_timeout']
    );
}
?> 